#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define rep(i, a, b) for (int i = (a); i <= (b); i++)
#define per(i, a, b) for (int i = (a); i >= (b); i--)
#define endl '\n'
const int N = 2e4 + 5;

int n, m;
string dict[35];
map<string, int> pos;
int tot;
struct Node {
  string s;
  int val;
  int player;
  int winer;
  int res[2];
} a[N];
set<int> ch[N];
int score(string s) {
  int mx = 0, res = 0;
  for (char c : s) {
    res += c - 'a' + 1;
    mx = max(mx, c - 'a' + 1);
  }
  return res * mx;
}
void init_score() {
  rep(i, 1, n) {
    int ns = dict[i].size();
    set<string> cur;
    rep(len, 1, ns) {
      rep(l, 0, ns - len) { cur.insert(dict[i].substr(l, len)); }
    }
    for (string s : cur) {
      if (!pos.count(s)) {
        pos[s] = ++tot;
        a[tot] = Node{s, score(s), (int)(s.size() & 1), -1, 0, 0};
      }
      a[pos[s]].val++;
    }
  }
  a[++tot] = {"", 0, 0, -1, 0, 0};
}
void build_tree() {
  rep(i, 1, tot) {
    string now = a[i].s;
    for (char c = 'a'; c <= 'z'; c++) {
      string nxt = c + now;
      if (pos.count(nxt)) ch[i].insert(pos[nxt]);
      nxt = now + c;
      if (pos.count(nxt)) ch[i].insert(pos[nxt]);
    }
  }
}
void dfs(int u) {
  if (a[u].winer != -1) return;
  if (ch[u].empty()) {
    a[u].winer = a[u].player;
    a[u].res[a[u].winer] = a[u].val;
    return;
  }
  int now = a[u].player;
  int oth = now ^ 1;
  int res[2][2] = {{-1, -1}, {-1, -1}};
  for (int v : ch[u]) {
    dfs(v);
    int x = a[v].winer;
    if (a[v].res[oth] > res[x][oth] ||
        a[v].res[oth] == res[x][oth] && a[v].res[now] < res[x][now]) {
      res[x][oth] = a[v].res[oth];
      res[x][now] = a[v].res[now];
    }
  }
  if (res[oth][0] == -1) {
    a[u].winer = now;
    a[u].res[now] = a[u].val + res[now][now];
    a[u].res[oth] = res[now][oth];
  } else {
    a[u].winer = oth;
    a[u].res[now] = a[u].val + res[oth][now];
    a[u].res[oth] = res[oth][oth];
  }
}
void solve() {
  cin >> n;
  rep(i, 1, n) cin >> dict[i];
  init_score();
  build_tree();
  dfs(tot);
  if (a[tot].winer == 1)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  cout << a[tot].res[1] << ' ' << a[tot].res[0] << endl;
  return;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int t;
  t = 1;
  while (t--) solve();
  return 0;
}